﻿function DatosPersonales() {

    this.Clie_ID = null;
    this.CodigoConvocatoria = null;

    this.PreInit = function () {
        var _parent = this;
    }

    //Para verificar el estado de la ficha
    this.VerificarEstadoFicha = function () {
        return true;
    };

    //Accion despues de guardar el registro
    this.AccionDespuesDeGrabar = function () {
        return true;
    };

    this.__VerificarCorreo = function (obj, funExito, funError) {
        var _parent = this;

        var objOldVal = obj.parent().find("#" + obj.attr("id") + "_temp");
        if (obj.val() != objOldVal.val()) {
            $.ajax({
                type: "post",
                url: URL_PAGE + "Account/VerificarEmailRegistrado",
                data: { email: obj.val() },
                success: function (data) {
                    if (data.existeEmail) {
                        _parent._MensajesOperacion("error", "Correo electrónico", "El correo electrónico ya se encuentra registrado");
                        //Regresando el valor al original
                        obj.val(objOldVal.val());

                        if (funError) {
                            funError();
                        }

                    } else {
                        if (funExito) {
                            funExito();
                        }
                    }
                }
            });
        } else {

            if (funExito) {
                funExito();
            }
        }
    };

    this.__VerificarNumeroDoc = function (obj, funExito, funError) {
        var _parent = this;

        var objOldVal = obj.parent().find("#" + obj.attr("id") + "_temp");
        if (obj.val() != objOldVal.val()) {
            $.ajax({
                type: "post",
                url: URL_PAGE + "Account/VerificarNumeroDoc",
                data: { numeroDoc: obj.val() },
                success: function (data) {
                    if (data.existeEmail) {
                        _parent._MensajesOperacion("error", "Número de documento", "El número de documento ya se encuentra registrado");
                        obj.val(objOldVal.val());
                        if (funError) {
                            funError();
                        }
                    } else {

                        if (funExito) {
                            funExito();
                        }
                    }
                }
            });
        } else {
            if (funExito) {
                funExito();
            }
        }
    };

    this._PostForm = function (data) {
        var _parent = this;

        //Tipo input file style -ie
        _parent.StyleInputFile(_parent._getForm().find("#Clie_Foto"));

        var UrlsUbigeo = {
            idPais: "#dp_pais",
            idDepartamento: "#dp_departamento",
            idProvincia: "#dp_provincia",
            idDistrito: "#dp_distrito",
            URLDepartamento: URL_PAGE + "Shared/Catalogo/ObtenerDepartamentoPorPais",
            URLProvincia: URL_PAGE + "Shared/Catalogo/ObtenerProvinciaPorDepartamento",
            URLDistrito: URL_PAGE + "Shared/Catalogo/ObtenerDistritoPorPaisDeptProvincia",
            CapaDepProvDist: "#ubigeoPersonal"
        }

        _parent._Ubigeo(UrlsUbigeo);

        //DatePicker para la fecha de nacimiento
        _parent._getForm().find("#dp_fecha_nacimiento").datepicker($.datepicker.regional["es"]);

        _parent._ValidacionExtensionArchivo(
            _parent._getForm().find("#Clie_Foto")
            , ["jpeg", "png", "jpg"]
            , "Formato de archivo incorrecto para la foto"
            , "Los formatos permitidos son jpg, png"
            );

        _parent._getForm().find("#dp_email_principal").blur(function () {
            var obj = $(this);
            _parent.__VerificarCorreo(obj);
        });

        _parent._getForm().find("#dp_email_alternativo").blur(function () {
            var obj = $(this);
            _parent.__VerificarCorreo(obj);
        });

        _parent._getForm().find("#dp_numero_documento").blur(function () {
            var obj = $(this);
            _parent.__VerificarNumeroDoc(obj);

        });

        //Cargando la acción del submit del formulario
        _parent._getForm().validationEngine({
            promptPosition: "topLeft",
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {

                if (status) {

                    var email = _parent._getForm().find("#dp_email_principal");
                    var emailAlternativo = _parent._getForm().find("#dp_email_alternativo");
                    var numeroDoc = _parent._getForm().find("#dp_numero_documento");

                    var EnviarDatos = function () {
                        _parent._getForm().ajaxSubmit({
                            dataType: 'json',
                            success: function (responseText, statusText, xhr, $form) {

                                if (responseText.pesoArchivo > 0 && !responseText.cargoElArchivo) {
                                    //Cargando nuevamente el formulario
                                    _parent.Form(
                                                {
                                                    Clie_ID: _parent.Clie_ID,
                                                    CodigoConvocatoria: _parent.CodigoConvocatoria
                                                });
                                    _parent._MensajesOperacion("block", "Registro grabado", "Los datos personales se grabarón correctamente<br/>El archivo de foto no fue grabado supera el peso permitido que es 1MB", 5000);
                                } else {
                                    _parent._MensajesOperacion("success", "Registro grabado", "Su datos personales se grabarón correctamente");
                                    _parent.AccionDespuesDeGrabar(responseText);
                                }

                                _parent.VerificarEstadoFicha();
                            }
                        });
                    };


                    _parent.__VerificarCorreo(email, function () {
                        _parent.__VerificarCorreo(emailAlternativo, function () {
                            _parent.__VerificarNumeroDoc(numeroDoc, function () {
                                EnviarDatos();
                            })
                        });
                    });

                }
            }
        });

        _parent.ValidacionCamposForm();
    }


    this.ValidacionCamposForm = function () {
        var _parent = this;

        _parent._getForm().find("#dp_nombres").addClass("validate[required]");
        _parent._getForm().find("#dp_paterno").addClass("validate[required]");
        _parent._getForm().find("#dp_materno").addClass("validate[required]");
        _parent._getForm().find("#dp_sexo").addClass("validate[required]");
        _parent._getForm().find("#dp_fecha_nacimiento").addClass("validate[required,custom[date]]");
        _parent._getForm().find("#dp_estado_civil").addClass("validate[required]");
        _parent._getForm().find("#dp_documento").addClass("validate[required]");
        _parent._getForm().find("#dp_numero_documento").addClass("validate[required]");
        _parent._getForm().find("#dp_profesion").addClass("validate[required]");
        _parent._getForm().find("#dp_gradoAcademico").addClass("validate[required]");
        _parent._getForm().find("#dp_nacionalidad").addClass("validate[required]");
        _parent._getForm().find("#dp_telefono_fijo").addClass("validate[required] text-input");
        _parent._getForm().find("#dp_telefono_movil").addClass("validate[required] text-input");
        _parent._getForm().find("#dp_email_principal").addClass("validate[required,custom[email]]");
        _parent._getForm().find("#dp_email_alternativo").addClass("validate[custom[email]]");

        _parent._getForm().find("#dp_pais").addClass("validate[required]");
        _parent._getForm().find("#dp_departamento").addClass("validate[required]");
        _parent._getForm().find("#dp_provincia").addClass("validate[required]");
        _parent._getForm().find("#dp_distrito").addClass("validate[required]");
        _parent._getForm().find("#Clie_Direccion").addClass("validate[required]");
        _parent._getForm().find("#Clie_Tenor").addClass("validate[required]");
    }
}